home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 April / EnigmA AMIGA RUN 06 (1996)(G.R. Edizioni)(IT)[!][issue 1996-04][Skylink CD V].iso / internet / others / spoolwatch.lha / SpoolWatch / Src / ProgArgsCLI.c < prev    next >
C/C++ Source or Header  |  1995-09-24  |  4KB  |  132 lines

  1.  
  2. /*
  3.  *    Function    ProgArgsCLI
  4.  *    Programmer    N.d'Alterio
  5.  *    Date        11/09/95
  6.  *
  7.  *  Synopsis:    Reads command line arguments for SpoolWatch and
  8.  *        returns them. Use FreeProgArgs to return memory
  9.  *        allocated to them.
  10.  *
  11.  *  Arguments:    None.
  12.  *
  13.  *  Returns:    struct SWArgs *        Structure containing all the
  14.  *                    programs options.
  15.  *        
  16.  *        NULL            If error.
  17.  *
  18.  *  Variables:    args[]            Set by ReadArgs to point to each
  19.  *                    command line arg.
  20.  *
  21.  *        rda            Pointer to read args structure.
  22.  *
  23.  *        swa            Pointer to structure to be filed
  24.  *                    in with processed arguments.
  25.  *
  26.  *  Functions:    AllocMem        Allocated memory (DOS)
  27.  *        FreeMem            Free memory (DOS)
  28.  *        AllocDosObject        Creates a dos structure (DOS)
  29.  *        FreeDosObject        Frees a dos structure (DOS)
  30.  *        ReadArgs        Parses command line (DOS)
  31.  *        FreeArgs        Frees mem allocated by ReadArgs (DOS)
  32.  *        strcpy            Copies one string to another (ANSI)
  33.  *        strlen            Length of a string (ANSI)
  34.  *        fprintf            Print to file stream (ANSI)        
  35.  *
  36.  *  $Id: ProgArgsCLI.c 1.7 1995/09/24 18:14:12 daltern Exp $
  37.  *
  38.  */
  39.  
  40. #include "SpoolWatch.h"
  41.  
  42. #define NUM_ARGS    7    
  43. #define ARG_TEMPLATE    "MAILDIR/K,NEWSDIR/K,DELAY/N,NOGUI/S,LEFT/N,TOP/N,FULL/S"
  44. #define OPT_MSD        0
  45. #define OPT_NSD        1
  46. #define OPT_DEL        2
  47. #define OPT_GUI        3
  48. #define    OPT_LEF        4
  49. #define OPT_TOP        5
  50. #define OPT_FULL    6
  51.         
  52. struct SWArgs *ProgArgsCLI( void )
  53.  
  54. {
  55.  
  56.   long int args[NUM_ARGS] = {0,0,0,0,0,0,0};
  57.  
  58.   struct RDArgs *rda;
  59.   struct SWArgs *swa;
  60.  
  61.   if ( swa = (struct SWArgs *)AllocMem( sizeof( struct SWArgs ), MEMF_ANY | MEMF_CLEAR ) ) {
  62.  
  63. /*
  64.  *   Set flag showing prog was started from the cli
  65.  */
  66.  
  67.       swa->start = CLI_START;
  68.  
  69.       if ( rda = (struct RDArgs *)AllocDosObject( DOS_RDARGS, NULL ) ) {
  70.  
  71.         if ( ReadArgs( ARG_TEMPLATE, args, rda ) ) {
  72.  
  73. /*
  74.  *   Process args found. If command line option given then use
  75.  *   that. Otherwise use default value.
  76.  */
  77.  
  78.  
  79.             if ( args[OPT_MSD] ) {
  80.                 swa->mail_spooldir = (char *)AllocMem( (ULONG)(strlen( (char *)args[OPT_MSD] ) * sizeof( char )), MEMF_ANY );
  81.                 strcpy( swa->mail_spooldir, (char *)args[OPT_MSD] );
  82.             } else {
  83.                 swa->mail_spooldir = (char *)AllocMem( (ULONG)(strlen( MAIL_SPOOLDIR ) * sizeof( char )), MEMF_ANY );
  84.                 strcpy( swa->mail_spooldir, MAIL_SPOOLDIR );
  85.             }   /* end if mail_spooldir */
  86.  
  87.             if ( args[OPT_NSD] ) {
  88.                 swa->news_spooldir = (char *)AllocMem( (ULONG)(strlen( (char *)args[OPT_NSD] ) * sizeof( char )), MEMF_ANY );
  89.                 strcpy( swa->news_spooldir, (char *)args[OPT_NSD] );
  90.             } else {
  91.                 swa->news_spooldir = (char *)AllocMem( (ULONG)(strlen( NEWS_SPOOLDIR ) * sizeof( char )), MEMF_ANY );
  92.                 strcpy( swa->news_spooldir, NEWS_SPOOLDIR );
  93.             }   /* end if news_spooldir */
  94.  
  95.             swa->delay    = args[OPT_DEL] ? *((LONG *)args[OPT_DEL]) : UPD_DELAY;
  96.  
  97.             swa->nogui    = args[OPT_GUI] ? TRUE : FALSE;
  98.  
  99.             swa->win_left = args[OPT_LEF] ? *((LONG *)args[OPT_LEF]) : WIN_LEFT;
  100.  
  101.             swa->win_top  = args[OPT_TOP] ? *((LONG * )args[OPT_TOP]) : WIN_TOP;
  102.  
  103.             swa->full      = args[OPT_FULL] ? TRUE : FALSE;
  104.             
  105.             FreeArgs( rda );
  106.     
  107.         } else {
  108.  
  109.             SWError( swa, NULL, "Incorrect arguments use option '?' for a template" );
  110.             FreeMem( swa, sizeof( struct SWArgs ) );
  111.             swa = NULL;
  112.  
  113.         }   /* end if ReadArgs */
  114.         
  115.         FreeDosObject( DOS_RDARGS, rda );
  116.  
  117.       } else {
  118.  
  119.         FreeMem( swa, sizeof( struct SWArgs ) );
  120.         swa = NULL;
  121.  
  122.     }  /* end if AllocDosObject */
  123.  
  124.   }  /* end if swa, swa = NULL if AllocMem has failed */
  125.  
  126.   return swa;
  127.  
  128. }   /* end function ProgArgsCLI */
  129.  
  130. /*========================================================================*
  131.                      END FUNCTION ProgArgsCLI
  132.  *========================================================================*/